"use strict";

const Service = require("egg").Service;

class ProductSpecService extends Service {
  /**
   * 获取商品规格列表
   * @param {Number} productId 商品ID
   * @returns {Promise<Array>} 商品规格列表
   */
  async getListByProductId(productId) {
    return this.ctx.model.ProductSpec.findAll({
      where: { product_id: productId },
      order: [["sort_order", "ASC"]],
    });
  }

  /**
   * 创建商品规格
   * @param {Number} productId 商品ID
   * @param {Array} specs 规格数据数组
   * @returns {Promise<Array>} 创建结果
   */
  async create(productId, specs) {
    const specList = specs.map((spec, index) => ({
      ...spec,
      product_id: productId,
      sort_order: index,
    }));

    return this.ctx.model.ProductSpec.bulkCreate(specList);
  }

  /**
   * 更新商品规格
   * @param {Number} id 规格ID
   * @param {Object} data 规格数据
   * @returns {Promise<Number>} 更新结果
   */
  async update(id, data) {
    return this.ctx.model.ProductSpec.update(data, {
      where: { id },
    });
  }

  /**
   * 删除商品规格
   * @param {Number} id 规格ID
   * @returns {Promise<Number>} 删除结果
   */
  async delete(id) {
    return this.ctx.model.ProductSpec.destroy({
      where: { id },
    });
  }

  /**
   * 批量删除商品规格
   * @param {Array} ids 规格ID数组
   * @returns {Promise<Number>} 删除结果
   */
  async batchDelete(ids) {
    return this.ctx.model.ProductSpec.destroy({
      where: { id: ids },
    });
  }
}

module.exports = ProductSpecService;
